/*
 Crea el inicio de sesión para una cuenta x
 */
package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jmysql.CUsuario;
import org.json.JSONException;
import org.json.JSONObject;
import validaciones.IndexData;
import validaciones.ValidacionData;

/**
 *
 * @author dblack
 */
public class InicioSesion extends HttpServlet {

   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

  
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String nomusuario=request.getParameter("nomusuario").trim().toLowerCase();
        String password=request.getParameter("password");
        int rol=Integer.parseInt(request.getParameter("rol"));
        int area=0;
        int idusuario=0;
        
        ValidacionData validacion=new ValidacionData();
        CUsuario cu=new CUsuario();
        
        
        
    
        if(rol!=3&&request.getParameter("area").compareTo("undefined")==0)
            validacion.SetValores("error", "nuevo_cmbox_area", "no existes áreas para iniciar la sesión", false);
        
        /*setting el area*/
        if(validacion.correcto&&rol==3)
            area=1;
        else if(validacion.correcto&&rol!=3)
            area=Integer.parseInt(request.getParameter("area"));
        
        if(validacion.correcto)
            idusuario=cu.idusuario(nomusuario, password);
        if(validacion.correcto&&idusuario==0)
            validacion.SetValores("error", "nombre", "el password/nomusuario es incorrecto", false);
        
        /*Constatar los permisos*/
        if(validacion.correcto&&!cu.UsuarioAsignacion(idusuario, area, rol)){
            validacion.SetValores("error", "nombre", "el usuario no tiene acceso a las áreas especifícadas", false);
        }
        
        
        if(validacion.correcto){
                HttpSession session = request.getSession(true);
                
                session.setAttribute("idusuario",idusuario);
                session.setAttribute("area",area);
                session.setAttribute("rol",rol);
            
                /*Preparamos la salida*/
                validacion.resultado="Redirigir";
                
                switch(rol){
                    case IndexData.Responsable_Area:
                        validacion.mensaje=IndexData.DirrInicio;
                    break;
                    case IndexData.Usuario:
                        validacion.mensaje=IndexData.DiruInicio;
                    break;
                    case IndexData.Administrador:
                        validacion.mensaje=IndexData.DiraInicio;
                    break;
                }   
        }
 
        //enviamos mensaje de respuesta
	PrintWriter out = response.getWriter();		
	response.setContentType("application/json");
		
	//imprimimos el valor de json
	out.print(validacion.getJSON());
	out.close();
        
    }

  
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
